package org.phnq.babel.types;

import java.util.*;

public final class JSObject extends JSValue
{
	private Map<String,JSValue> values;

	public JSObject()
	{
		super(VAL_TYPE_OBJECT);

		this.values = new HashMap<String,JSValue>();
	}

	public void put(String s, JSValue val)
	{
		values.put(s, val);
	}

	public void put(String s, String val)
	{
		put(s, new JSString(val));
	}

	public void put(String s, int val)
	{
		put(s, new JSNumber(val));
	}

	public void put(String s, float val)
	{
		put(s, new JSNumber(val));
	}

	public void put(JSString jsStr, JSValue val)
	{
		put(jsStr.stringValue(), val);
	}

	public JSValue get(String s)
	{
		return values.get(s);
	}

	public JSValue get(JSString jsStr)
	{
		return get(jsStr.stringValue());
	}

	public String[] getKeys()
	{
		return values.keySet().toArray(new String[values.size()]);
	}
}
